/*This file is part of StarNoid.

StarNoid is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

StarNoid is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with StarNoid.  If not, see <http://www.gnu.org/licenses/>.*/

#ifndef _VENTANA_
#define _VENTANA_
#include <Gosu/Gosu.hpp>
#include "constantes.h"
#include "elemento.h"
using namespace std;

//Clase Ventana
class Ventana: public Gosu::Window{
public:
	//Constructor y destructor
	Ventana();
	~Ventana();
	//Método que actualiza el juego
	void update();
	//Método que dibuja los elementos del juego
	void draw();
	//Método para reconocer los botones pulsados
	void buttonDown(Gosu::Button b);
	//Método para ocultar el cursor
	bool needsCursor()const{return false;}
private:
	//Atributos que guardan punteros a las imágenes del juego
	Gosu:: Image *fondo,*bola,*sable,*clon;
	//Atributo que guarda un puntero a la fuente del juego
	Gosu:: Font *fuente;
	//Enumerado que contiene el estado del escenario, si se encuentra en START es el estado inicial en el que la bola
	//está pegada al sable, si se encuentra en MOVIMIENTO, quiere decir que la bola se está moviendo
	enum Estado {START,MOVIMIENTO};
	Estado EstadoActual;
	//Matriz que contiene todos los bloques que serán dibujados en el escenario
	Bloque clones[7][12];
	//Variable para saber cuantos bloques hay intactos
	size_t n_bloques;
	//Creamos la Bola y el Sable
	Elemento Sable,Bola;
	//Velocidades vertical y horizontal
	double v_vertical,v_horizontal;
	//Número de puntos
	size_t puntos;
	//Número de vidas restantes
	size_t vidas;
	//Método para rellenar el escenario de clones
	void RellenaConClones();
};
#endif
